package com.ruoyi.system.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.DsXxMapper;
import com.ruoyi.system.domain.DsXx;
import com.ruoyi.system.service.IDsXxService;

/**
 * 聊天记录Service业务层处理
 *
 * @author tyro
 * @date 2025-03-13
 */
@Service
public class DsXxServiceImpl implements IDsXxService
{
    @Autowired
    private DsXxMapper dsXxMapper;

    /**
     * 查询聊天记录
     *
     * @param xxId 聊天记录主键
     * @return 聊天记录
     */
    @Override
    public DsXx selectDsXxByXxId(Long xxId)
    {
        return dsXxMapper.selectDsXxByXxId(xxId);
    }

    /**
     * 查询聊天记录列表
     *
     * @param dsXx 聊天记录
     * @return 聊天记录
     */
    @Override
    public List<DsXx> selectDsXxList(DsXx dsXx)
    {
        // 获取当前登录用户ID
        Long userId = SecurityUtils.getUserId();

        // 如果不是管理员，则添加学院过滤条件
        if(!SecurityUtils.isAdmin(userId)){ // 或使用 SecurityUtils.isAdmin(loginUser.getUser().getUserId())
            dsXx.setCollegeId(SecurityUtils.getLoginUser().getCollegeId());
        }
        return dsXxMapper.selectDsXxList(dsXx);
    }

    @Override
    public DsXx selectDsXxAIResponse(String ltId, String createTime) {
        return dsXxMapper.selectDsXxAIResponse(ltId, createTime);
    }

    /**
     * 新增聊天记录
     *
     * @param dsXx 聊天记录
     * @return 结果
     */
    @Override
    public int insertDsXx(DsXx dsXx)
    {
        // 设置学院ID
        if (dsXx.getCollegeId() == null) {
            try {
                dsXx.setCollegeId(SecurityUtils.getLoginUser().getCollegeId());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (dsXx.getCollegeId() == null){
            String userName = dsXx.getUserName();
            int collegeId = dsXxMapper.getCollegeIdByUserName(userName);
            dsXx.setCollegeId(collegeId);
        }
        dsXx.setCreateTime(DateUtils.getNowDate());
        return dsXxMapper.insertDsXx(dsXx);
    }

    /**
     * 修改聊天记录
     *
     * @param dsXx 聊天记录
     * @return 结果
     */
    @Override
    public int updateDsXx(DsXx dsXx)
    {
        return dsXxMapper.updateDsXx(dsXx);
    }

    /**
     * 批量删除聊天记录
     *
     * @param xxIds 需要删除的聊天记录主键
     * @return 结果
     */
    @Override
    public int deleteDsXxByXxIds(Long[] xxIds)
    {
        return dsXxMapper.deleteDsXxByXxIds(xxIds);
    }

    /**
     * 删除聊天记录信息
     *
     * @param xxId 聊天记录主键
     * @return 结果
     */
    @Override
    public int deleteDsXxByXxId(Long xxId)
    {
        return dsXxMapper.deleteDsXxByXxId(xxId);
    }

    /**
     * 获取用户数量
     * @return
     */
    @Override
    public Long getUserCount(DsXx dsXx) {
        return dsXxMapper.getUserCount(dsXx);
    }
}
